home *** CD-ROM | disk | FTP | other *** search
/ World of Amiga / World of Amiga.iso / archive / assembly / dis.lha / dis.s < prev    next >
Text File  |  1993-05-19  |  36KB  |  2,919 lines

  1. ;The longword 'POINTER' points to where to start disassembling, and 
  2. ;text output comes to a block called 'LINE'.
  3. ;It disassembles only one line of code ay each call to 'DISASSEMBLER'.
  4.  
  5. ;It does not support anything higher than 68000...
  6.  
  7. ;-------------------------------------------------------------------------
  8. ; Disassembler by Morten Amundsen (mortena@ifi.uio.no)
  9. ;-------------------------------------------------------------------------
  10.  
  11.     section    Program,code
  12.  
  13. ;-- Macros ---------------------------------------------------------------
  14.  
  15. GETWORD:    MACRO
  16.         moveq    #0,d0
  17.         move.w    (a6)+,d0
  18.         ENDM
  19.  
  20. ;-------------------------------------------------------------------------
  21.  
  22. GETLONG:    MACRO
  23.         move.l    (a6)+,d0
  24.         ENDM
  25.  
  26. ;-------------------------------------------------------------------------
  27.  
  28. FILL:        MACRO
  29.         lea    \1,a0
  30. LOOP\@1:    move.b    (a0)+,(a5)+
  31.         bne.s    LOOP\@1
  32.         lea    -1(a5),a5
  33.         ENDM
  34.  
  35. ;-------------------------------------------------------------------------
  36.  
  37. CHAR:        MACRO
  38.         move.b    #\1,(a5)+
  39.         ENDM
  40.  
  41. ;-------------------------------------------------------------------------
  42.  
  43. SOURCE:        MACRO
  44.         move.w    CODE,d0
  45.         move.w    d0,d1
  46.         and.w    #%0000000000111000,d0    ; Mode
  47.         lsr.w    #3,d0
  48.         and.w    #%0000000000000111,d1    ; Register
  49.         bsr.l    MODEREGISTER
  50.         ENDM
  51.  
  52. ;-------------------------------------------------------------------------
  53.  
  54. DESTINATION:    MACRO
  55.         move.w    CODE,d0
  56.         move.w    d0,d1
  57.         and.w    #%0000000111000000,d0    ; Mode
  58.         lsr.w    #6,d0
  59.         and.w    #%0000111000000000,d1    ; Register
  60.         rol.w    #7,d1
  61.         bsr.l    MODEREGISTER
  62.         ENDM
  63.  
  64. ;-------------------------------------------------------------------------
  65.  
  66. DATAREG:    MACRO
  67.         lea    DATAS,a0
  68.         lsl.w    #1,d1
  69.         lea    (a0,d1.w),a0
  70.         move.b    (a0)+,(a5)+
  71.         move.b    (a0),(a5)+
  72.         ENDM
  73.  
  74. ;-------------------------------------------------------------------------
  75.  
  76. ADDRESSREG:    MACRO
  77.         lea    ADDS,a0
  78.         lsl.w    #1,d1
  79.         lea    (a0,d1.w),a0
  80.         move.b    (a0)+,(a5)+
  81.         move.b    (a0),(a5)+
  82.         ENDM
  83.  
  84. ;-------------------------------------------------------------------------
  85.  
  86. NIL:        equ    $00
  87. TAB:        equ    $09
  88. LF:        equ    $0a
  89. SPC:        equ    $20
  90.  
  91. ;-------------------------------------------------------------------------
  92.  
  93. S:
  94.     jsr    DISASSEMBLE
  95.     rts
  96.  
  97.  
  98. DISASSEMBLE:
  99.     movem.l    d0-d7/a0-a6,-(a7)
  100.  
  101.     move.l    POINTER,a6
  102.  
  103.     bsr.s    CLRLINE
  104.     lea    LINE,a5
  105.  
  106.     GETWORD
  107.     
  108.     move.w    d0,CODE
  109.     and.w    #$f000,d0
  110.     rol.w    #6,d0
  111.  
  112.     lea    GROUPS,a0
  113.     lea    (a0,d0.w),a0
  114.     move.l    (a0),a0
  115.     jsr    (a0)
  116.  
  117.     move.l    a6,POINTER
  118.  
  119.     movem.l    (a7)+,d0-d7/a0-a6
  120.     rts
  121.  
  122. ;-------------------------------------------------------------------------
  123.  
  124. CLRLINE:
  125.     lea    LINE,a0
  126.     move.w    #79,d7
  127. CLRLOOP:
  128.     clr.b    (a0)+
  129.     dbf    d7,CLRLOOP
  130.     rts
  131.  
  132. ;-------------------------------------------------------------------------
  133.  
  134. NONE:
  135.     cmp.b    #TAB,-(a5)
  136.     bne.s    NONE
  137.  
  138.     lea    1(a5),a5
  139.  
  140.     lea    (a5),a0
  141.     move.w    #39,d7
  142. SAFETY:    clr.b    (a0)+
  143.     dbf    d7,SAFETY
  144.  
  145.     FILL    DECLARE
  146.     CHAR    TAB
  147.     
  148.     move.w    CODE,d0
  149.     bsr.w    WORD2TEXT
  150.  
  151.     CHAR    LF
  152.     rts
  153.  
  154. ;=========================================================================
  155.  
  156. BMMI:
  157.     move.w    CODE,d0
  158.  
  159.     and.w    #%0000111100000000,d0        ; ori
  160.     beq.w    ORII
  161.     cmp.w    #%0000100000000000,d0
  162.     beq.w    BITSS
  163.     cmp.w    #%0000001000000000,d0
  164.     beq.w    ANDII
  165.     cmp.w    #%0000010000000000,d0
  166.     beq.w    SUBII
  167.     cmp.w    #%0000011000000000,d0
  168.     beq.w    ADDII
  169.     cmp.w    #%0000101000000000,d0
  170.     beq.w    EORII
  171.     cmp.w    #%0000110000000000,d0
  172.     beq.w    CMPII
  173.     cmp.w    #%0000111000000000,d0
  174.     beq.w    MOVESI
  175.  
  176.     btst    #8,d0
  177.     bne.s    BITSD
  178.  
  179.     bra.w    NONE
  180.  
  181. ;-------------------------------------------------------------------------
  182.  
  183. BITSD:
  184.     move.w    CODE,d0
  185.     and.w    #%0000000000111000,d0
  186.     cmp.w    #%0000000000001000,d0
  187.     beq.w    MOVEPI
  188.  
  189.     move.w    CODE,d0
  190.     and.w    #%0000000011000000,d0
  191.     lsr.w    #4,d0
  192.  
  193.     lea    BTST,a0
  194.     lea    (a0,d0.w),a0
  195.  
  196.     move.b    (a0)+,(a5)+
  197.     move.b    (a0)+,(a5)+
  198.     move.b    (a0)+,(a5)+
  199.     move.b    (a0),(a5)+
  200.  
  201.     CHAR    TAB
  202.  
  203.     move.w    CODE,d0
  204.     and.w    #%0000111000000000,d0
  205.     rol.w    #7,d0
  206.     move.w    d0,d1
  207.     DATAREG
  208.  
  209.     CHAR    ","
  210.  
  211.     move.w    CODE,d0
  212.     SOURCE
  213.  
  214.     CHAR    LF
  215.     rts    
  216.  
  217. ;-------------------------------------------------------------------------
  218.  
  219. BITSS:
  220.     move.w    CODE,d0
  221.     and.w    #%0000000011000000,d0
  222.     lsr.w    #4,d0
  223.  
  224.     lea    BTST,a0
  225.     lea    (a0,d0.w),a0
  226.  
  227.     move.b    (a0)+,(a5)+
  228.     move.b    (a0)+,(a5)+
  229.     move.b    (a0)+,(a5)+
  230.     move.b    (a0),(a5)+
  231.  
  232.     CHAR    TAB
  233.  
  234.     CHAR    "#"
  235.  
  236.     GETWORD
  237.     bsr.l    WORD2TEXT
  238.  
  239.     CHAR    ","
  240.  
  241.     move.w    CODE,d0
  242.     SOURCE
  243.  
  244.     CHAR    LF
  245.     rts
  246.  
  247.  
  248. ;-------------------------------------------------------------------------
  249.  
  250. MOVEPI:
  251.     FILL    MOVEP
  252.  
  253.     move.w    CODE,d0
  254.     bsr.w    GETSIZE
  255.  
  256.     CHAR    TAB
  257.  
  258.     move.w    CODE,d0
  259.     btst    #7,d0
  260.     beq.s    MPM2R
  261.  
  262. MPR2M:
  263.     move.w    d0,d1
  264.     and.w    #%0000111000000000,d1
  265.     rol.w    #7,d1
  266.     DATAREG
  267.  
  268.     CHAR    ","
  269.  
  270.     GETWORD
  271.     bsr.w    WORD2TEXT
  272.  
  273.     CHAR    "("
  274.  
  275.     move.w    CODE,d0
  276.     move.w    d0,d1
  277.     and.w    #%0000000000000111,d1
  278.     ADDRESSREG
  279.  
  280.     CHAR    ")"
  281.     CHAR    LF
  282.     rts
  283.  
  284. MPM2R:
  285.     GETWORD
  286.     bsr.w    WORD2TEXT
  287.  
  288.     CHAR    "("
  289.  
  290.     move.w    CODE,d0
  291.     move.w    d0,d1
  292.     and.w    #%0000000000000111,d1
  293.     ADDRESSREG
  294.  
  295.     CHAR    ")"
  296.  
  297.     CHAR    ","
  298.  
  299.     move.w    d0,d1
  300.     and.w    #%0000111000000000,d1
  301.     rol.w    #7,d1
  302.     DATAREG
  303.  
  304.     CHAR    LF
  305.     rts
  306.  
  307. ;-------------------------------------------------------------------------
  308.  
  309. ORII:                        ; ORI
  310.     FILL    OR
  311.     bra.s    IMMCAT0
  312.  
  313. ANDII:
  314.     FILL    AND
  315.     bra.s    IMMCAT0
  316.  
  317. SUBII:
  318.     FILL    SUB
  319.     bra.s    IMMCAT0
  320.  
  321. ADDII:
  322.     FILL    ADD
  323.     bra.s    IMMCAT0
  324.  
  325. EORII:
  326.     FILL    EOR
  327.     bra.s    IMMCAT0
  328.  
  329. CMPII:
  330.     FILL    CMP
  331.     bra.s    IMMCAT0
  332.  
  333. MOVESI:
  334.     FILL    MOVES
  335.     bra.w    IMMCAT0
  336.  
  337. ;-----------------------------------------------------------------------
  338.  
  339. IMMCAT0:
  340.     move.w    CODE,d0
  341.     move.w    d0,d1
  342.     and.w    #%0000000011000000,d1
  343.     cmp.w    #%0000000011000000,d1        ; Hmmm...
  344.     beq.w    NONE
  345.  
  346.     bsr.w    GETSIZE
  347.  
  348.     CHAR    TAB
  349.     
  350.     lsr.w    #1,d1
  351.  
  352.     CHAR    "#"
  353.     bsr.s    IMMVALUE
  354.  
  355.     CHAR    ","
  356.  
  357.     moveq    #0,d0
  358.     move.w    CODE,d0
  359.  
  360.     SOURCE
  361.  
  362.     CHAR    LF
  363.     rts
  364.  
  365. ;-------------------------------------------------------------------------
  366.     
  367. IMMVALUE:
  368.     cmp.w    #2,d1
  369.     beq.s    VALLONG
  370.  
  371. VALWORD:
  372.     GETWORD
  373.     bsr.l    WORD2TEXT
  374.     rts
  375.  
  376. VALLONG:
  377.     GETLONG
  378.     bsr.l    LONG2TEXT
  379.     rts
  380.  
  381. ;=========================================================================
  382.  
  383. MOVEI:                    ; MOVE.B/MOVE.W/MOVE.L
  384.     FILL    MOVE
  385.  
  386.     lsr.w    #2,d0
  387.  
  388.     cmp.w    #1,d0
  389.     beq.s    MOVEB
  390.     cmp.w    #2,d0
  391.     beq.s    MOVEL
  392.  
  393. MOVEW:
  394.     FILL    WORD
  395.     clr.w    SIZE
  396.     bra.s    MOVEMODES
  397.  
  398. MOVEB:
  399.     FILL    BYTE
  400.     clr.w    SIZE
  401.     bra.s    MOVEMODES
  402.  
  403. MOVEL:
  404.     FILL    LONG
  405.     move.w    #1,SIZE
  406.     
  407. MOVEMODES:
  408.     CHAR    TAB
  409.  
  410.     clr.w    ISC
  411.     SOURCE
  412.  
  413.     CHAR    ","
  414.  
  415.     move.w    #1,ISC
  416.     DESTINATION
  417.  
  418.     CHAR    LF
  419.     rts
  420.  
  421. ;=========================================================================
  422.  
  423. BCCI:                        ; Bcc
  424.     CHAR    "b"
  425.  
  426.     move.w    CODE,d0
  427.     and.w    #%0000111100000000,d0
  428.     lsr.w    #7,d0
  429.  
  430.     lea    BRANCHES,a0
  431.     lea    (a0,d0.w),a0
  432.  
  433.     move.b    (a0)+,(a5)+
  434.     move.b    (a0),(a5)+
  435.  
  436.     CHAR    "."
  437.  
  438.     move.w    CODE,d0
  439.     and.w    #$00ff,d0
  440.     beq.s    DIS16
  441.  
  442. DIS8:
  443.     CHAR    "s"
  444.     CHAR    TAB
  445.     
  446.     ext.w    d0
  447.     ext.l    d0
  448.     add.l    a6,d0
  449.  
  450.     bsr.w    LONG2TEXT
  451.  
  452.     CHAR    LF
  453.     rts
  454.  
  455. DIS16:
  456.     CHAR    "l"
  457.     CHAR    TAB
  458.     
  459.     GETWORD
  460.  
  461.     ext.l    d0
  462.     add.l    a6,d0
  463.     subq.l    #$2,d0
  464.  
  465.     bsr.w    LONG2TEXT    
  466.  
  467.     CHAR    LF
  468.     rts
  469.  
  470. ;=========================================================================
  471.  
  472. MOVEQI:                        ; MOVEQ
  473.     FILL    MOVEQ
  474.  
  475.     CHAR    TAB
  476.  
  477.     CHAR    "#"
  478.  
  479.     move.w    CODE,d0
  480.     and.w    #$00ff,d0
  481.     bsr.w    BYTE2TEXT
  482.  
  483.     CHAR    ","
  484.  
  485.     move.w    CODE,d0
  486.     and.w    #%0000111000000000,d0
  487.     lsr.w    #8,d0
  488.     move.w    d0,d1
  489.  
  490.     DATAREG
  491.  
  492.     CHAR    LF
  493.     rts
  494.  
  495. ;=========================================================================
  496.  
  497. SHIFTI:                        ; ROR/ROL/LSL/LSR/etc
  498.     move.w    CODE,d0                ; (All shifting instr.)
  499.     and.w    #%0000000011000000,d0
  500.     cmp.w    #%0000000011000000,d0        ; Memory-form or
  501.     beq.w    MEMFORM                ; Register-form shifting...
  502.  
  503. REGFORM:
  504.     move.w    CODE,d0
  505.     move.w    d0,d1
  506.     and.w    #%0000000000011000,d0
  507.     and.w    #%0000000100000000,d1
  508.     lsr.w    #6,d1
  509.     or.w    d1,d0
  510.  
  511.     lea    SHIFTS,a0
  512.     move.l    (a0,d0.w),a0
  513.  
  514.     FILL    (a0)
  515.  
  516.     move.w    CODE,d0
  517.     bsr.w    GETSIZE
  518.  
  519.     CHAR    TAB
  520.  
  521.     btst    #5,d0
  522.     beq.s    IDATA
  523.  
  524. REGNUM:
  525.     and.w    #%0000111000000000,d0
  526.     rol.w    #7,d0
  527.     move.w    d0,d1
  528.     DATAREG
  529.     
  530.     bra.s    SHFTD        
  531.  
  532. IDATA:
  533.     CHAR    "#"
  534.  
  535.     and.w    #%0000111000000000,d0
  536.     rol.w    #7,d0
  537.     bsr.w    WORD2TEXT    
  538.  
  539. SHFTD:
  540.     CHAR    ","
  541.  
  542.     move.w    CODE,d0
  543.     and.w    #%0000000000000111,d0
  544.     move.w    d0,d1
  545.     DATAREG
  546.  
  547.     CHAR    LF
  548.     rts
  549.  
  550. ;-------------------------------------------------------------------------
  551.  
  552. MEMFORM:
  553.     move.w    CODE,d0
  554.     and.w    #%0000011100000000,d0
  555.     lsr.w    #6,d0
  556.  
  557.     lea    SHIFTS,a0
  558.     move.l    (a0,d0.w),a0
  559.  
  560.     FILL    (a0)
  561.     CHAR    "."
  562.     CHAR    "w"
  563.  
  564.     CHAR    TAB
  565.  
  566.     SOURCE
  567.  
  568.     CHAR    LF    
  569.     rts
  570.  
  571. ;=========================================================================
  572.  
  573. LINEAI:                        ; LINE_A
  574.     FILL    LINEA
  575.     bra.s    LINECOMP
  576.  
  577. LINEFI:                        ; LINE_F
  578.     FILL    LINEF
  579.  
  580. LINECOMP:
  581.     CHAR    TAB
  582.     CHAR    "#"
  583.  
  584.     move.w    CODE,d0
  585.     and.w    #$0fff,d0
  586.  
  587.     bsr.w    WORD2TEXT
  588.  
  589.     CHAR    LF
  590.     rts
  591.  
  592. ;=========================================================================
  593.  
  594. ADDINS:
  595.     move.w    CODE,d0
  596.     and.w    #%0000000011000000,d0
  597.     cmp.w    #%0000000011000000,d0
  598.     beq.w    ADDAI
  599.  
  600.     move.w    CODE,d0
  601.     and.w    #%0000000100110000,d0
  602.     cmp.w    #%0000000100000000,d0
  603.     beq.w    ADDXI
  604.  
  605. ADDING:                            ; ADD
  606.     FILL    ADD
  607.  
  608.     move.w    CODE,d0
  609.     bsr.w    GETSIZE    
  610.  
  611.     CHAR    TAB
  612.  
  613.     btst    #8,d0
  614.     beq.s    ADDMEM2D
  615.  
  616. ADDD2MEM:
  617.     and.w    #%0000111000000000,d0
  618.     rol.w    #7,d0
  619.     move.w    d0,d1
  620.     DATAREG
  621.  
  622.     CHAR    ","
  623.  
  624.     move.w    CODE,d0
  625.     SOURCE
  626.  
  627.     CHAR    LF
  628.     rts
  629.  
  630. ADDMEM2D:
  631.     move.w    CODE,d0
  632.     SOURCE
  633.  
  634.     CHAR    ","
  635.  
  636.     move.w    CODE,d0
  637.     and.w    #%0000111000000000,d0
  638.     rol.w    #7,d0
  639.     move.w    d0,d1
  640.     DATAREG
  641.  
  642.     CHAR    LF
  643.     rts
  644.  
  645. ;--------------------------------------------------------------------------
  646.  
  647. ADDXI:                        ; ADDX
  648.     FILL    ADDX
  649.  
  650.     move.w    CODE,d0
  651.     bsr.w    GETSIZE
  652.  
  653.     CHAR    TAB
  654.  
  655.     btst    #3,d0
  656.     beq.s    DATAXA
  657.  
  658. ADDRX:
  659.     CHAR    "-"
  660.     CHAR    "("
  661.     and.w    #%0000000000000111,d0
  662.     move.w    d0,d1
  663.     ADDRESSREG
  664.     CHAR    ")"
  665.     
  666.     CHAR    ","
  667.  
  668.     CHAR    "-"
  669.     CHAR    "("
  670.     move.w    CODE,d0
  671.     and.w    #%0000111000000000,d0
  672.     rol.w    #7,d0
  673.     move.w    d0,d1
  674.     ADDRESSREG
  675.     CHAR    ")"
  676.  
  677.     CHAR    LF    
  678.     rts        
  679.  
  680. ;------------------------------------------------------------------------
  681.  
  682. DATAXA:
  683.     and.w    #%0000000000000111,d0
  684.     move.w    d0,d1
  685.     DATAREG
  686.  
  687.     CHAR    ","
  688.  
  689.     move.w    CODE,d0
  690.     and.w    #%0000111000000000,d0
  691.     rol.w    #7,d0
  692.     move.w    d0,d1
  693.     DATAREG
  694.  
  695.     CHAR    LF    
  696.     rts
  697.  
  698. ;--------------------------------------------------------------------------
  699.  
  700. ADDAI:                            ; ADDA
  701.     FILL    ADD
  702.  
  703.     CHAR    "."
  704.  
  705.     move.w    CODE,d0
  706.     btst    #8,d0
  707.     beq.s    ADDAW
  708.  
  709. ADDAL:
  710.     CHAR    "l"
  711.     bra.s    ADDAC
  712.  
  713. ADDAW:
  714.     CHAR    "w"
  715.  
  716. ADDAC:
  717.     CHAR    TAB
  718.  
  719.     SOURCE
  720.  
  721.     CHAR    ","
  722.  
  723.     move.w    CODE,d0
  724.     and.w    #%0000111000000000,d0
  725.     rol.w    #7,d0
  726.     move.w    d0,d1
  727.     ADDRESSREG
  728.  
  729.     CHAR    LF    
  730.     rts
  731.  
  732. ;=========================================================================
  733.  
  734. SUBINS:
  735.     move.w    CODE,d0
  736.     and.w    #%0000000011000000,d0
  737.     cmp.w    #%0000000011000000,d0
  738.     beq.w    SUBAI
  739.  
  740.     move.w    CODE,d0
  741.     and.w    #%0000000100110000,d0
  742.     cmp.w    #%0000000100000000,d0
  743.     beq.w    SUBXI
  744.  
  745. SUBING:                            ; SUB
  746.     FILL    SUB
  747.  
  748.     move.w    CODE,d0
  749.     bsr.w    GETSIZE    
  750.  
  751.     CHAR    TAB
  752.  
  753.     btst    #8,d0
  754.     beq.s    SUBMEM2D
  755.  
  756. SUBD2MEM:
  757.     and.w    #%0000111000000000,d0
  758.     rol.w    #7,d0
  759.     move.w    d0,d1
  760.     DATAREG
  761.  
  762.     CHAR    ","
  763.  
  764.     move.w    CODE,d0
  765.     SOURCE
  766.  
  767.     CHAR    LF
  768.     rts
  769.  
  770. SUBMEM2D:
  771.     move.w    CODE,d0
  772.     SOURCE
  773.  
  774.     CHAR    ","
  775.  
  776.     move.w    CODE,d0
  777.     and.w    #%0000111000000000,d0
  778.     rol.w    #7,d0
  779.     move.w    d0,d1
  780.     DATAREG
  781.  
  782.     CHAR    LF
  783.     rts
  784.  
  785. ;--------------------------------------------------------------------------
  786.  
  787. SUBXI:                            ; SUBX
  788.     FILL    SUBX
  789.  
  790.     move.w    CODE,d0
  791.     bsr.w    GETSIZE
  792.  
  793.     CHAR    TAB
  794.  
  795.     btst    #3,d0
  796.     beq.s    DATAXS
  797.  
  798. SUBAX:
  799.     CHAR    "-"
  800.     CHAR    "("
  801.     and.w    #%0000000000000111,d0
  802.     move.w    d0,d1
  803.     ADDRESSREG
  804.     CHAR    ")"
  805.     
  806.     CHAR    ","
  807.  
  808.     CHAR    "-"
  809.     CHAR    "("
  810.     move.w    CODE,d0
  811.     and.w    #%0000111000000000,d0
  812.     rol.w    #7,d0
  813.     move.w    d0,d1
  814.     ADDRESSREG
  815.     CHAR    ")"
  816.  
  817.     CHAR    LF    
  818.     rts        
  819.  
  820. ;------------------------------------------------------------------------
  821.  
  822. DATAXS:
  823.     and.w    #%0000000000000111,d0
  824.     move.w    d0,d1
  825.     DATAREG
  826.  
  827.     CHAR    ","
  828.  
  829.     move.w    CODE,d0
  830.     and.w    #%0000111000000000,d0
  831.     rol.w    #7,d0
  832.     move.w    d0,d1
  833.     DATAREG
  834.  
  835.     CHAR    LF    
  836.     rts
  837.  
  838. ;--------------------------------------------------------------------------
  839.  
  840. SUBAI:                            ; SUBA
  841.     FILL    SUB
  842.  
  843.     CHAR    "."
  844.  
  845.     move.w    CODE,d0
  846.     btst    #8,d0
  847.     beq.s    SUBAW
  848.  
  849. SUBAL:
  850.     CHAR    "l"
  851.     bra.s    SUBAC
  852.  
  853. SUBAW:
  854.     CHAR    "w"
  855.  
  856. SUBAC:
  857.     CHAR    TAB
  858.  
  859.     SOURCE
  860.  
  861.     CHAR    ","
  862.  
  863.     move.w    CODE,d0
  864.     and.w    #%0000111000000000,d0
  865.     rol.w    #7,d0
  866.     move.w    d0,d1
  867.     ADDRESSREG
  868.  
  869.     CHAR    LF    
  870.     rts
  871.  
  872. ;=========================================================================
  873.  
  874. ASSDB:                        ; ADDQ/SUBQ/Scc/DBcc
  875.  
  876.     move.w    CODE,d0
  877.     and.w    #%0000000011000000,d0
  878.     cmp.w    #%0000000011000000,d0
  879.     beq.s    SDBRANCH
  880.  
  881.     move.w    CODE,d0
  882.     btst    #8,d0
  883.     beq.s    ADDQI
  884.  
  885. SUBQI:                        ; SUBQ
  886.     FILL    SUBQ
  887.     bra.s    ADDSUBQ
  888.     
  889. ADDQI:
  890.     FILL    ADDQ                ; ADDQ
  891.  
  892. ADDSUBQ:
  893.     bsr.w    GETSIZE
  894.  
  895.     CHAR    TAB
  896.  
  897.     CHAR    "#"
  898.  
  899.     and.w    #%0000111000000000,d0
  900.     rol.w    #7,d0
  901.     bsr.w    BYTE2TEXT
  902.  
  903.     CHAR    ","
  904.  
  905.     move.w    CODE,d0
  906.     SOURCE
  907.  
  908.     CHAR    LF
  909.     rts
  910.  
  911. SDBRANCH:
  912.     move.w    CODE,d0
  913.     and.w    #%0000000000111000,d0
  914.     cmp.w    #%0000000000001000,d0
  915.     beq.s    DBCCI
  916.  
  917. SCCI:                            ; Scc
  918.     CHAR    "s"
  919.     bra.s    CBRA
  920.     
  921. DBCCI:                            ; DBcc
  922.     CHAR    "d"
  923.     CHAR    "b"
  924.  
  925. CBRA:
  926.     move.w    CODE,d0
  927.     and.w    #%0000111100000000,d0
  928.     cmp.w    #%0000000100000000,d0
  929.     bgt.s    JUMPB
  930.  
  931.     tst.w    d0
  932.     bne.s    BRAF
  933.  
  934.     CHAR    "t"
  935.     bra.s    DONEB
  936.         
  937. BRAF:
  938.     CHAR    "f"
  939.     bra.s    DONEB
  940.     
  941. JUMPB:
  942.     lsr.w    #7,d0
  943.     lea    BRANCHES,a0
  944.     lea    (a0,d0.w),a0
  945.  
  946.     move.b    (a0)+,(a5)+
  947.     move.b    (a0),(a5)+
  948.  
  949. DONEB:
  950.     CHAR    TAB
  951.  
  952.     move.w    CODE,d0
  953.     and.w    #%0000000000111000,d0
  954.     cmp.w    #%0000000000001000,d0
  955.     beq.s    DBCCI2
  956.  
  957. SCCI2:
  958.     move.w    CODE,d0
  959.     SOURCE
  960.  
  961.     CHAR    LF
  962.     rts
  963.     
  964. DBCCI2:
  965.     move.w    CODE,d0
  966.     and.w    #%0000000000000111,d0
  967.     move.w    d0,d1
  968.     DATAREG
  969.  
  970.     CHAR    ","
  971.  
  972.     GETWORD
  973.     add.l    a6,d0
  974.     subq.l    #$2,d0
  975.     bsr.w    LONG2TEXT
  976.     
  977.     CHAR    LF
  978.     rts
  979.  
  980. ;=========================================================================
  981.  
  982. CMPEOR:
  983.     move.w    CODE,d0
  984.     and.w    #%0000000011000000,d0
  985.     cmp.w    #%0000000011000000,d0
  986.     beq.w    CMPAI
  987.  
  988.     move.w    CODE,d0
  989.     btst    #8,d0
  990.     beq.w    CMPINS
  991.  
  992.     and.w    #%0000000000111000,d0
  993.     cmp.w    #%0000000000001000,d0
  994.     beq.s    CMPMI
  995.  
  996. EORINS:                            ; EOR
  997.     FILL    EOR
  998.  
  999.     move.w    CODE,d0
  1000.     bsr.w    GETSIZE
  1001.  
  1002.     CHAR    TAB
  1003.  
  1004.     SOURCE
  1005.  
  1006.     CHAR    ","
  1007.  
  1008.     move.w    CODE,d0
  1009.     and.w    #%0000111000000000,d0
  1010.     rol.w    #7,d0
  1011.     move.w    d0,d1
  1012.     DATAREG
  1013.  
  1014.     CHAR    LF
  1015.     rts
  1016.  
  1017. ;----------------------------------------------------------------------
  1018.  
  1019. CMPMI:                            ; CMPM
  1020.     FILL    CMPM
  1021.  
  1022.     move.w    CODE,d0
  1023.     bsr.w    GETSIZE
  1024.  
  1025.     CHAR    TAB
  1026.  
  1027.     CHAR    "("
  1028.  
  1029.     and.w    #%0000000000000111,d0
  1030.     move.w    d0,d1
  1031.     ADDRESSREG
  1032.  
  1033.     CHAR    ")"
  1034.     CHAR    "+"
  1035.  
  1036.     CHAR    ","
  1037.  
  1038.     CHAR    "("
  1039.  
  1040.     move.w    CODE,d0
  1041.     and.w    #%0000111000000000,d0
  1042.     rol.w    #7,d0
  1043.     move.w    d0,d1
  1044.     ADDRESSREG
  1045.  
  1046.     CHAR    ")"
  1047.     CHAR    "+"
  1048.  
  1049.     CHAR    LF    
  1050.     rts
  1051.  
  1052. ;-------------------------------------------------------------------------
  1053.  
  1054. CMPAI:                            ; CMPA
  1055.     FILL    CMP
  1056.  
  1057.     move.w    CODE,d0
  1058.  
  1059.     CHAR    "."
  1060.     CHAR    "w"
  1061.  
  1062.     clr.w    SIZE
  1063.  
  1064.     btst    #8,d0
  1065.     beq.s    CMPAOK
  1066.  
  1067.     move.w    #1,SIZE
  1068.  
  1069.     lea    -1(a5),a5
  1070.     CHAR    "l"
  1071.  
  1072. CMPAOK:    
  1073.     CHAR    TAB
  1074.  
  1075.     clr.w    ISC
  1076.     SOURCE
  1077.  
  1078.     CHAR    ","
  1079.  
  1080.     move.w    CODE,d0
  1081.     and.w    #%0000111000000000,d0
  1082.     rol.w    #7,d0
  1083.     move.w    d0,d1
  1084.     ADDRESSREG    
  1085.  
  1086.     CHAR    LF
  1087.     rts
  1088.  
  1089. ;-------------------------------------------------------------------------
  1090.  
  1091. CMPINS:                            ; CMP
  1092.     FILL    CMP
  1093.  
  1094.     move.w    CODE,d0
  1095.     bsr.w    GETSIZE
  1096.         
  1097.     CHAR    TAB
  1098.  
  1099.     SOURCE
  1100.  
  1101.     CHAR    ","
  1102.  
  1103.     move.w    CODE,d0
  1104.     and.w    #%0000111000000000,d0
  1105.     rol.w    #7,d0
  1106.     move.w    d0,d1
  1107.     DATAREG        
  1108.  
  1109.     CHAR    LF
  1110.     rts    
  1111.  
  1112.  
  1113. ;=========================================================================
  1114.  
  1115. ORDIS:
  1116.     move.w    CODE,d0
  1117.     and.w    #%0000000011000000,d0
  1118.     cmp.w    #%0000000011000000,d0
  1119.     beq.w    DIVI
  1120.  
  1121.     move.w    CODE,d0
  1122.     and.w    #%0000000111110000,d0
  1123.     cmp.w    #%0000000100000000,d0
  1124.     beq.w    SBCDI
  1125.  
  1126. ORI:                            ; OR
  1127.     FILL    OR
  1128.  
  1129.     move.w    CODE,d0
  1130.     bsr.w    GETSIZE
  1131.  
  1132.     CHAR    TAB
  1133.  
  1134.     move.w    CODE,d0
  1135.     btst    #8,d0
  1136.     beq.s    ORMEM2D
  1137.  
  1138. ORD2MEM:
  1139.     and.w    #%0000111000000000,d0
  1140.     rol.w    #7,d0
  1141.     move.w    d0,d1
  1142.     DATAREG
  1143.  
  1144.     CHAR    ","
  1145.  
  1146.     move.w    CODE,d0
  1147.     SOURCE
  1148.  
  1149.     CHAR    LF
  1150.     rts
  1151.  
  1152. ORMEM2D:
  1153.     SOURCE
  1154.  
  1155.     CHAR    ","
  1156.  
  1157.     move.w    CODE,d0
  1158.     and.w    #%0000111000000000,d0
  1159.     rol.w    #7,d0
  1160.     move.w    d0,d1
  1161.     DATAREG
  1162.  
  1163.     CHAR    LF
  1164.     rts
  1165.  
  1166. ;-------------------------------------------------------------------------
  1167.  
  1168. SBCDI:                            ; SBCD
  1169.     FILL    SBCD
  1170.  
  1171.     CHAR    TAB
  1172.  
  1173.     move.w    CODE,d0
  1174.     btst    #3,d0
  1175.     beq.s    SBCDDAT
  1176.  
  1177. SBCDADD:
  1178.     CHAR    "-"
  1179.     CHAR    "("
  1180.  
  1181.     and.w    #%0000000000000111,d0
  1182.     move.w    d0,d1
  1183.     ADDRESSREG
  1184.  
  1185.     CHAR    ")"
  1186.     CHAR    ","
  1187.     CHAR    "-"
  1188.     CHAR    "("
  1189.  
  1190.     move.w    CODE,d1
  1191.     and.w    #%0000111000000000,d1
  1192.     rol.w    #7,d1
  1193.     ADDRESSREG
  1194.  
  1195.     CHAR    ")"
  1196.     
  1197.     CHAR    LF
  1198.     rts
  1199.  
  1200. SBCDDAT:
  1201.     and.w    #%0000000000000111,d0
  1202.     move.w    d0,d1
  1203.     DATAREG
  1204.  
  1205.     CHAR    ","
  1206.  
  1207.     move.w    CODE,d1
  1208.     and.w    #%0000111000000000,d1
  1209.     rol.w    #7,d1
  1210.     DATAREG
  1211.     
  1212.     CHAR    LF
  1213.     rts
  1214.  
  1215. ;------------------------------------------------------------------------
  1216.  
  1217. DIVI:                        ; DIVS/DIVU
  1218.     FILL    DIV
  1219.  
  1220.     CHAR    "u"
  1221.  
  1222.     move.w    CODE,d0
  1223.     btst    #8,d0
  1224.     beq.s    OKDIV
  1225.  
  1226.     lea    -1(a5),a5
  1227.     CHAR    "s"
  1228.  
  1229. OKDIV:
  1230.     CHAR    TAB
  1231.  
  1232.     SOURCE
  1233.     CHAR    ","
  1234.  
  1235.     move.w    CODE,d0
  1236.     and.w    #%0000111000000000,d0
  1237.     rol.w    #7,d0
  1238.     move.w    d0,d1
  1239.     DATAREG
  1240.  
  1241.     CHAR    LF
  1242.     rts
  1243.  
  1244.  
  1245. ;=========================================================================
  1246.  
  1247. AMAE:
  1248.     move.w    CODE,d0
  1249.     and.w    #%0000000011000000,d0
  1250.     cmp.w    #%0000000011000000,d0
  1251.     beq.w    MULI
  1252.  
  1253.     move.w    CODE,d0
  1254.     and.w    #%0000000011110000,d0
  1255.     beq.w    ABCDI
  1256.  
  1257.     move.w    CODE,d0
  1258.     and.w    #%0000000111111000,d0
  1259.     cmp.w    #%0000000101000000,d0
  1260.     beq.w    EXGDD
  1261.     cmp.w    #%0000000101001000,d0
  1262.     beq.w    EXGAA
  1263.     cmp.w    #%0000000110000000,d0
  1264.     beq.w    EXGDA
  1265.  
  1266. ANDINS:
  1267.     FILL    AND
  1268.  
  1269.     move.w    CODE,d0
  1270.     bsr.w    GETSIZE
  1271.  
  1272.     CHAR    TAB
  1273.  
  1274.     btst    #8,d0
  1275.     beq.s    ANDMEM2D
  1276.  
  1277. ANDD2MEM:
  1278.     move.w    CODE,d0
  1279.     and.w    #%0000111000000000,d0
  1280.     rol.w    #7,d0
  1281.     move.w    d0,d1
  1282.     DATAREG
  1283.  
  1284.     CHAR    ","
  1285.  
  1286.     move.w    CODE,d0
  1287.     SOURCE
  1288.  
  1289.     CHAR    LF
  1290.     rts
  1291.  
  1292. ANDMEM2D:
  1293.     move.w    CODE,d0
  1294.     SOURCE
  1295.  
  1296.     CHAR    ","
  1297.  
  1298.     move.w    CODE,d0
  1299.     and.w    #%0000111000000000,d0
  1300.     rol.w    #7,d0
  1301.     move.w    d0,d1
  1302.     DATAREG
  1303.  
  1304.     CHAR    LF
  1305.     rts
  1306.  
  1307. ;--------------------------------------------------------------------------
  1308.  
  1309. EXGDD:
  1310.     FILL    EXG
  1311.     CHAR    TAB
  1312.  
  1313.     move.w    CODE,d0
  1314.     and.w    #%0000000000000111,d0
  1315.     move.w    d0,d1
  1316.     DATAREG
  1317.  
  1318.     CHAR    ","
  1319.  
  1320.     move.w    CODE,d0
  1321.     and.w    #%0000111000000000,d0
  1322.     rol.w    #7,d0
  1323.     move.w    d0,d1
  1324.     DATAREG
  1325.     
  1326.     CHAR    LF
  1327.     rts
  1328.  
  1329. ;--------------------------------------------------------------------------
  1330.  
  1331. EXGAA:
  1332.     FILL    EXG
  1333.     CHAR    TAB
  1334.  
  1335.     move.w    CODE,d0
  1336.     and.w    #%0000000000000111,d0
  1337.     move.w    d0,d1
  1338.     ADDRESSREG
  1339.  
  1340.     CHAR    ","
  1341.  
  1342.     move.w    CODE,d0
  1343.     and.w    #%0000111000000000,d0
  1344.     rol.w    #7,d0
  1345.     move.w    d0,d1
  1346.     ADDRESSREG
  1347.     
  1348.     CHAR    LF
  1349.     rts
  1350.  
  1351. ;--------------------------------------------------------------------------
  1352.  
  1353. EXGDA:
  1354.     FILL    EXG
  1355.     move.w    CODE,d0
  1356.     and.w    #%0000000000000111,d0
  1357.     move.w    d0,d1
  1358.     DATAREG
  1359.  
  1360.     CHAR    ","
  1361.  
  1362.     move.w    CODE,d0
  1363.     and.w    #%0000111000000000,d0
  1364.     rol.w    #7,d0
  1365.     move.w    d0,d1
  1366.     ADDRESSREG
  1367.     
  1368.     CHAR    LF
  1369.     rts
  1370.  
  1371. ;--------------------------------------------------------------------------
  1372.  
  1373. ABCDI:
  1374.     FILL    ABCD
  1375.  
  1376.     CHAR    TAB
  1377.  
  1378.     move.w    CODE,d0
  1379.     btst    #3,d0
  1380.     beq.s    ABCDDAT
  1381.  
  1382. ABCDADD:
  1383.     CHAR    "-"
  1384.     CHAR    "("
  1385.  
  1386.     and.w    #%0000000000000111,d0
  1387.     move.w    d0,d1
  1388.     ADDRESSREG
  1389.  
  1390.     CHAR    ")"
  1391.     CHAR    ","
  1392.     CHAR    "-"
  1393.     CHAR    "("
  1394.  
  1395.     move.w    CODE,d1
  1396.     and.w    #%0000111000000000,d1
  1397.     rol.w    #7,d1
  1398.     ADDRESSREG
  1399.  
  1400.     CHAR    ")"
  1401.     
  1402.     CHAR    LF
  1403.     rts
  1404.  
  1405. ABCDDAT:
  1406.     and.w    #%0000000000000111,d0
  1407.     move.w    d0,d1
  1408.     DATAREG
  1409.  
  1410.     CHAR    ","
  1411.  
  1412.     move.w    CODE,d1
  1413.     and.w    #%0000111000000000,d1
  1414.     rol.w    #7,d1
  1415.     DATAREG
  1416.     
  1417.     CHAR    LF
  1418.     rts
  1419.  
  1420. ;--------------------------------------------------------------------------
  1421.  
  1422. MULI:
  1423.     FILL    MUL
  1424.  
  1425.     move.w    CODE,d0
  1426.  
  1427.     CHAR    "u"
  1428.  
  1429.     btst    #8,d0
  1430.     beq.s    OKMUL
  1431.  
  1432.     lea    -1(a5),a5
  1433.     CHAR    "s"
  1434.     
  1435. OKMUL:
  1436.     CHAR    TAB
  1437.  
  1438.     SOURCE
  1439.  
  1440.     CHAR    ","
  1441.  
  1442.     move.w    CODE,d0
  1443.     and.w    #%0000111000000000,d0
  1444.     rol.w    #7,d0
  1445.     move.w    d0,d1
  1446.     DATAREG
  1447.  
  1448.     CHAR    LF    
  1449.     rts
  1450.  
  1451. ;=========================================================================
  1452.  
  1453. MISC:
  1454.     move.w    CODE,d0
  1455.  
  1456.     cmp.w    #$4e70,d0
  1457.     beq.w    RESETI
  1458.     cmp.w    #$4e71,d0
  1459.     beq.w    NOPI
  1460.     cmp.w    #$4e72,d0
  1461.     beq.w    STOPI
  1462.     cmp.w    #$4e73,d0
  1463.     beq.w    RTEI
  1464.     cmp.w    #$4e74,d0
  1465.     beq.w    RTDI
  1466.     cmp.w    #$4e75,d0
  1467.     beq.w    RTSI
  1468.     cmp.w    #$4e76,d0
  1469.     beq.w    TRAPVI
  1470.     cmp.w    #$4e77,d0
  1471.     beq.w    RTRI
  1472.     cmp.w    #$4afc,d0
  1473.     beq.w    ILLEGALI
  1474.  
  1475.     move.w    CODE,d0
  1476.     and.w    #%0000111111111110,d1
  1477.     cmp.w    #%0000111001111010,d1
  1478.     beq.w    MOVECI
  1479.  
  1480. ;---
  1481.  
  1482.     move.w    d0,d1
  1483.     and.w    #%0000111111111000,d1
  1484.     
  1485.     cmp.w    #%0000100001000000,d1
  1486.     beq.w    SWAPI
  1487.     cmp.w    #%0000100010000000,d1
  1488.     beq.w    EXTWI
  1489.     cmp.w    #%0000100011000000,d1
  1490.     beq.w    EXTLI
  1491.     cmp.w    #%0000111001100000,d1
  1492.     beq.w    TOUSPI
  1493.     cmp.w    #%0000111001101000,d1
  1494.     beq.w    FROMUSPI
  1495.         
  1496. ;---
  1497.  
  1498.     move.w    d0,d1
  1499.     and.w    #%0000111111110000,d1
  1500.  
  1501.     cmp.w    #%0000111001010000,d1
  1502.     beq.w    LINKI
  1503.  
  1504. ;---
  1505.  
  1506.     move.w    d0,d1
  1507.     and.w    #%0000111111000000,d1
  1508.  
  1509.     cmp.w    #%0000111010000000,d1
  1510.     beq.w    JSRI
  1511.  
  1512.     cmp.w    #%0000111011000000,d1
  1513.     beq.w    JMPI
  1514.  
  1515.     cmp.w    #%0000111001000000,d1
  1516.     beq.w    TRAPI
  1517.  
  1518.     cmp.w    #%0000100001000000,d1
  1519.     beq.w    PEAI
  1520.  
  1521.     cmp.w    #%0000100000000000,d1
  1522.     beq.w    NBCDI
  1523.  
  1524.     cmp.w    #%0000101011000000,d1
  1525.     beq.w    TASI
  1526.         
  1527. ;---
  1528.  
  1529.     move.w    d0,d1
  1530.     and.w    #%0000111110000000,d1
  1531.  
  1532.     cmp.w    #%0000100010000000,d1
  1533.     beq.s    MOVMEA
  1534.  
  1535.     cmp.w    #%0000110010000000,d1
  1536.     beq.w    MOVMREG
  1537.  
  1538. ;---
  1539.  
  1540.     move.w    d0,d1
  1541.     and.w    #%0000111100000000,d1
  1542.  
  1543.     cmp.w    #%0000101000000000,d1
  1544.     beq.w    TSTI
  1545.  
  1546.     cmp.w    #%0000000000000000,d1
  1547.     beq.w    FROMSRI
  1548.  
  1549.     cmp.w    #%0000011000000000,d1
  1550.     beq.w    TOSRI
  1551.  
  1552.     cmp.w    #%0000001000000000,d1
  1553.     beq.w    FROMCCRI
  1554.  
  1555.     cmp.w    #%0000010000000000,d1
  1556.     beq.w    TOCCRI
  1557.  
  1558.     move.w    d0,d1
  1559.     and.w    #%0000000111000000,d1
  1560.  
  1561.     cmp.w    #%0000000111000000,d1
  1562.     beq.w    LEAI
  1563.  
  1564.     cmp.w    #%0000000110000000,d1
  1565.     beq.w    CHKI    
  1566.  
  1567.     bra.l    NONE
  1568.  
  1569. ;-------------------------------------------------------------------------
  1570.  
  1571. MOVMEA:
  1572.     FILL    MOVEM
  1573.     CHAR    "."
  1574.  
  1575.     CHAR    "w"
  1576.  
  1577.     move.w    CODE,d0
  1578.     btst    #6,d0
  1579.     beq.s    OKME    
  1580.  
  1581.     lea    -1(a5),a5
  1582.     CHAR    "l"
  1583.     
  1584. OKME:
  1585.     CHAR    TAB
  1586.  
  1587.     GETWORD
  1588.     move.w    d0,SET
  1589.  
  1590.     move.w    CODE,d0
  1591.     and.w    #%0000000000111000,d0
  1592.     cmp.w    #%0000000000100000,d0
  1593.     bne.s    OKSET
  1594.  
  1595.     bsr.w    REVSET
  1596.     
  1597. OKSET:
  1598.     bsr.w    REGISTERS
  1599.  
  1600.     CHAR    ","
  1601.  
  1602.     move.w    CODE,d0
  1603.     SOURCE
  1604.  
  1605.     CHAR    LF
  1606.     rts
  1607.  
  1608. ;-----------------------------------------------------------------------
  1609.  
  1610. MOVMREG:
  1611.     FILL    MOVEM
  1612.     CHAR    "."
  1613.  
  1614.     CHAR    "w"
  1615.  
  1616.     move.w    CODE,d0
  1617.     btst    #6,d0
  1618.     beq.s    OKMR
  1619.  
  1620.     lea    -1(a5),a5
  1621.     CHAR    "l"
  1622.     
  1623. OKMR:
  1624.     CHAR    TAB
  1625.  
  1626.     GETWORD
  1627.     move.w    d0,SET
  1628.     
  1629.     move.w    CODE,d0
  1630.     SOURCE
  1631.  
  1632.     CHAR    ","
  1633.  
  1634.     bsr.s    REGISTERS
  1635.  
  1636.     CHAR    LF
  1637.     rts
  1638.  
  1639.  
  1640. ;-------------------------------------------------------------------------
  1641.  
  1642. REGISTERS:
  1643.     move.w    SET,d0
  1644.     lea    DATAS,a0
  1645.     
  1646.     moveq    #0,d7
  1647. REGLOOP:
  1648.     btst    d7,d0
  1649.     beq.s    NXT
  1650.  
  1651.     move.b    (a0),(a5)+
  1652.     move.b    1(a0),(a5)+
  1653.     CHAR    "/"
  1654.  
  1655. NXT:    lea    2(a0),a0
  1656.     addq.w    #1,d7
  1657.     cmp.w    #$10,d7
  1658.     bne.s    REGLOOP
  1659.  
  1660.     lea    -1(a5),a5
  1661.     rts
  1662.  
  1663. ;-------------------------------------------------------------------------
  1664.  
  1665. REVSET:
  1666.     move.w    SET,d0
  1667.     moveq    #0,d1
  1668.  
  1669.     moveq    #0,d6
  1670.     move.w    #15,d7
  1671. REVLOOP:
  1672.     btst    d7,d0
  1673.     beq.s    NEXTREG
  1674.  
  1675.     bset    d6,d1
  1676.  
  1677. NEXTREG:
  1678.     addq.w    #1,d6
  1679.     dbf    d7,REVLOOP
  1680.  
  1681.     move.w    d1,SET
  1682.     rts    
  1683.  
  1684. ;-------------------------------------------------------------------------
  1685.  
  1686. MOVECI:
  1687.     FILL    MOVEC
  1688.     CHAR    TAB
  1689.  
  1690.     move.w    CODE,d0
  1691.     btst    #0,d0
  1692.     beq.s    CSRC
  1693.  
  1694. CDST:
  1695.     GETWORD
  1696.     bsr.s    REGISTER
  1697.     CHAR    ","
  1698.     bsr.s    CONTROL
  1699.     CHAR    LF
  1700.     rts    
  1701.  
  1702. ;----
  1703.  
  1704. CSRC:
  1705.     GETWORD
  1706.     bsr.s    CONTROL
  1707.     CHAR    ","
  1708.     bsr.s    REGISTER
  1709.     CHAR    LF
  1710.     rts
  1711.  
  1712. ;-----------------
  1713.  
  1714. CONTROL:
  1715.     move.w    d0,d2
  1716.     and.w    #%0000111111111111,d2
  1717.  
  1718.     tst.w    d2
  1719.     beq.s    SFCI
  1720.     cmp.w    #$1,d2
  1721.     beq.s    DFCI
  1722.     cmp.w    #$800,d2
  1723.     beq.s    USPI
  1724.     cmp.w    #$801,d2
  1725.     beq.s    VBRI
  1726.  
  1727.     rts
  1728.  
  1729. ;--------------
  1730.  
  1731. SFCI:
  1732.     CHAR    "s"
  1733.     CHAR    "f"
  1734.     CHAR    "c"
  1735.     rts
  1736.  
  1737. DFCI:
  1738.     CHAR    "d"
  1739.     CHAR    "f"
  1740.     CHAR    "c"
  1741.     rts
  1742.  
  1743. USPI:
  1744.     CHAR    "u"
  1745.     CHAR    "s"
  1746.     CHAR    "p"
  1747.     rts
  1748.  
  1749. VBRI:
  1750.     CHAR    "v"
  1751.     CHAR    "b"
  1752.     CHAR    "r"
  1753.     rts
  1754.  
  1755. ;-----------------
  1756.  
  1757. REGISTER:
  1758.     move.w    d0,d2
  1759.     and.w    #%0111000000000000,d0
  1760.     rol.w    #4,d0
  1761.     move.w    d0,d1
  1762.  
  1763.     btst    #15,d2
  1764.     bne.s    AREG
  1765.  
  1766. DREG:
  1767.     DATAREG
  1768.     move.w    d2,d0
  1769.     rts
  1770.     
  1771. AREG:
  1772.     ADDRESSREG
  1773.     move.w    d2,d0
  1774.     rts
  1775.  
  1776. ;-------------------------------------------------------------------------
  1777.  
  1778. TASI:
  1779.     FILL    TAS
  1780.     CHAR    TAB
  1781.  
  1782.     move.w    CODE,d0
  1783.     SOURCE
  1784.  
  1785.     CHAR    LF
  1786.     rts
  1787.     
  1788. ;-------------------------------------------------------------------------
  1789.  
  1790. TSTI:
  1791.     FILL    TST
  1792.  
  1793.     move.w    CODE,d0
  1794.     bsr.w    GETSIZE
  1795.  
  1796.     CHAR    TAB
  1797.  
  1798.     move.w    CODE,d0
  1799.     SOURCE
  1800.  
  1801.     CHAR    LF
  1802.     rts
  1803.  
  1804. ;-------------------------------------------------------------------------
  1805.  
  1806. NBCDI:
  1807.     FILL    NBCD
  1808.     CHAR    TAB
  1809.  
  1810.     move.w    CODE,d0
  1811.     SOURCE
  1812.  
  1813.     CHAR    LF    
  1814.     rts
  1815.  
  1816. ;-------------------------------------------------------------------------
  1817.  
  1818. PEAI:
  1819.     FILL    PEA
  1820.     CHAR    TAB
  1821.  
  1822.     move.w    CODE,d0
  1823.     SOURCE
  1824.  
  1825.     CHAR    LF
  1826.     rts
  1827.  
  1828. ;-------------------------------------------------------------------------
  1829.  
  1830. TOUSPI:
  1831.     FILL    MOVE
  1832.     CHAR    "."
  1833.     CHAR    "l"
  1834.  
  1835.     CHAR    TAB
  1836.  
  1837.     move.w    CODE,d0
  1838.     and.w    #%0000000000000111,d0
  1839.     move.w    d0,d1
  1840.     ADDRESSREG
  1841.  
  1842.     CHAR    ","
  1843.  
  1844.     CHAR    "u"
  1845.     CHAR    "s"
  1846.     CHAR    "p"
  1847.  
  1848.     CHAR    LF
  1849.     rts
  1850.  
  1851. ;-------------------------------------------------------------------------
  1852.  
  1853. FROMUSPI:
  1854.     FILL    MOVE
  1855.     CHAR    "."
  1856.     CHAR    "l"
  1857.  
  1858.     CHAR    TAB
  1859.  
  1860.     CHAR    "u"
  1861.     CHAR    "s"
  1862.     CHAR    "p"
  1863.  
  1864.     CHAR    ","
  1865.  
  1866.     move.w    CODE,d0
  1867.     and.w    #%0000000000000111,d0
  1868.     move.w    d0,d1
  1869.     ADDRESSREG
  1870.  
  1871.     CHAR    LF
  1872.     rts
  1873.  
  1874. ;-------------------------------------------------------------------------
  1875.  
  1876. SWAPI:
  1877.     FILL    SWAP
  1878.     bra.s    ESREG
  1879.     
  1880. EXTWI:
  1881.     FILL    EXTW
  1882.     bra.s    ESREG
  1883.  
  1884. EXTLI:
  1885.     FILL    EXTL
  1886.  
  1887. ESREG:
  1888.     CHAR    TAB
  1889.  
  1890.     move.w    CODE,d0
  1891.     and.w    #%0000000000000111,d0
  1892.     move.w    d0,d1
  1893.     DATAREG
  1894.  
  1895.     CHAR    LF
  1896.     rts
  1897.  
  1898. ;-------------------------------------------------------------------------
  1899.  
  1900. LEAI:
  1901.     FILL    LEA
  1902.  
  1903.     CHAR    TAB
  1904.  
  1905.     move.w    CODE,d0
  1906.     SOURCE
  1907.  
  1908.     CHAR    ","
  1909.  
  1910.     move.w    CODE,d0
  1911.     and.w    #%0000111000000000,d0
  1912.     rol.w    #7,d0
  1913.     move.w    d0,d1
  1914.     ADDRESSREG
  1915.  
  1916.     CHAR    LF    
  1917.     rts
  1918.  
  1919. ;-------------------------------------------------------------------------
  1920.  
  1921. CHKI:
  1922.     FILL    CHK
  1923.  
  1924.     CHAR    TAB
  1925.  
  1926.     move.w    CODE,d0
  1927.     SOURCE
  1928.  
  1929.     CHAR    ","
  1930.  
  1931.     move.w    CODE,d0
  1932.     and.w    #%0000111000000000,d0
  1933.     rol.w    #7,d0
  1934.     move.w    d0,d1
  1935.     DATAREG
  1936.  
  1937.     CHAR    LF    
  1938.     rts
  1939.  
  1940. ;-------------------------------------------------------------------------
  1941.  
  1942. LINKI:
  1943.     move.w    CODE,d0
  1944.     btst    #3,d0
  1945.     bne.s    UNLKI
  1946.  
  1947.     FILL    LINK
  1948.     CHAR    TAB
  1949.  
  1950.     move.w    CODE,d0
  1951.     and.w    #%0000000000000111,d0
  1952.     move.w    d0,d1
  1953.     ADDRESSREG    
  1954.  
  1955.     CHAR    ","
  1956.  
  1957.     CHAR    "#"
  1958.  
  1959.     GETWORD
  1960.     bsr.w    WORD2TEXT
  1961.  
  1962.     CHAR    LF
  1963.     rts
  1964.  
  1965. UNLKI:
  1966.     FILL    UNLK
  1967.  
  1968.     CHAR    TAB
  1969.  
  1970.     move.w    CODE,d0
  1971.     and.w    #%0000000000000111,d0
  1972.     move.w    d0,d1
  1973.     ADDRESSREG    
  1974.  
  1975.     CHAR    LF    
  1976.     rts
  1977. ;-------------------------------------------------------------------------
  1978.  
  1979. FROMCCRI:
  1980.     move.w    d0,d1
  1981.     and.w    #%0000000011000000,d1
  1982.     cmp.w    #%0000000011000000,d1
  1983.     bne.s    CLRI
  1984.  
  1985.     FILL    MOVE
  1986.     CHAR    "."
  1987.     CHAR    "w"
  1988.  
  1989.     CHAR    TAB
  1990.  
  1991.     CHAR    "c"
  1992.     CHAR    "c"
  1993.     CHAR    "r"
  1994.  
  1995.     CHAR    ","
  1996.  
  1997.     move.w    CODE,d0
  1998.     SOURCE
  1999.  
  2000.     CHAR    LF
  2001.     rts
  2002.  
  2003. ;-------------------------------------------------------------------------
  2004.  
  2005. CLRI:
  2006.     FILL    CLR
  2007.  
  2008.     move.w    CODE,d0
  2009.     bsr.w    GETSIZE
  2010.  
  2011.     CHAR    TAB
  2012.  
  2013.     move.w    CODE,d0
  2014.     SOURCE
  2015.  
  2016.     CHAR    LF
  2017.     rts
  2018.  
  2019. ;-------------------------------------------------------------------------
  2020.  
  2021. TOCCRI:
  2022.     move.w    d0,d1
  2023.     and.w    #%0000000011000000,d1
  2024.     cmp.w    #%0000000011000000,d1
  2025.     bne.s    NEGINS
  2026.  
  2027.     FILL    MOVE
  2028.     CHAR    "."
  2029.     CHAR    "w"
  2030.  
  2031.     CHAR    TAB
  2032.  
  2033.     move.w    CODE,d0
  2034.     SOURCE
  2035.  
  2036.     CHAR    ","
  2037.  
  2038.     CHAR    "c"
  2039.     CHAR    "c"
  2040.     CHAR    "r"
  2041.  
  2042.     CHAR    LF
  2043.     rts
  2044.  
  2045. ;---------------------------------------------------------------------------
  2046.  
  2047. NEGINS:
  2048.     FILL    NEG
  2049.  
  2050.     move.w    CODE,d0
  2051.     bsr.w    GETSIZE
  2052.  
  2053.     CHAR    TAB
  2054.  
  2055.     move.w    CODE,d0
  2056.     SOURCE
  2057.  
  2058.     CHAR    LF
  2059.     rts
  2060.  
  2061. ;---------------------------------------------------------------------------
  2062.  
  2063. FROMSRI:
  2064.     move.w    d0,d1
  2065.     and.w    #%0000000011000000,d1
  2066.     cmp.w    #%0000000011000000,d1
  2067.     bne.s    NEGXI
  2068.  
  2069.     FILL    MOVE
  2070.     CHAR    "."
  2071.     CHAR    "w"
  2072.  
  2073.     CHAR    TAB
  2074.  
  2075.     CHAR    "s"
  2076.     CHAR    "r"
  2077.  
  2078.     CHAR    ","
  2079.  
  2080.     move.w    CODE,d0
  2081.     SOURCE
  2082.  
  2083.     CHAR    LF
  2084.     rts
  2085.  
  2086. ;-------------------------------------------------------------------------
  2087.  
  2088. NEGXI:
  2089.     FILL    NEGX
  2090.  
  2091.     move.w    CODE,d0
  2092.     bsr.w    GETSIZE
  2093.  
  2094.     CHAR    TAB
  2095.  
  2096.     move.w    CODE,d0
  2097.     SOURCE
  2098.  
  2099.     CHAR    LF
  2100.     rts
  2101.  
  2102. ;-------------------------------------------------------------------------
  2103.  
  2104. TOSRI:
  2105.     move.w    d0,d1
  2106.     and.w    #%0000000011000000,d1
  2107.     cmp.w    #%0000000011000000,d1
  2108.     bne.s    NOTI
  2109.  
  2110.     FILL    MOVE
  2111.     CHAR    "."
  2112.     CHAR    "w"
  2113.  
  2114.     CHAR    TAB
  2115.  
  2116.     move.w    CODE,d0
  2117.     SOURCE
  2118.  
  2119.     CHAR    ","
  2120.  
  2121.     CHAR    "s"
  2122.     CHAR    "r"
  2123.  
  2124.     CHAR    LF
  2125.     rts
  2126.  
  2127. ;-------------------------------------------------------------------------
  2128.  
  2129. NOTI:
  2130.     FILL    NOT
  2131.  
  2132.     move.w    CODE,d0
  2133.     bsr.w    GETSIZE
  2134.  
  2135.     CHAR    TAB
  2136.  
  2137.     move.w    CODE,d0
  2138.     SOURCE
  2139.  
  2140.     CHAR    LF
  2141.     rts
  2142.  
  2143. ;-------------------------------------------------------------------------
  2144.  
  2145. TRAPI:
  2146.     FILL    TRAP
  2147.     CHAR    TAB
  2148.  
  2149.     CHAR    "#"
  2150.     
  2151.     move.w    CODE,d0
  2152.     and.w    #%0000000000000111,d0
  2153.     bsr.w    BYTE2TEXT
  2154.  
  2155.     CHAR    LF
  2156.     rts
  2157.  
  2158. ;-------------------------------------------------------------------------
  2159.  
  2160. JSRI:
  2161.     FILL    JSR
  2162.     bra.s    JUMPCOMP
  2163.  
  2164. JMPI:
  2165.     FILL    JMP
  2166.  
  2167. JUMPCOMP:
  2168.     CHAR    TAB
  2169.  
  2170.     move.w    CODE,d0
  2171.     SOURCE
  2172.  
  2173.     CHAR    LF
  2174.     rts
  2175.  
  2176. ;-------------------------------------------------------------------------
  2177.  
  2178. STOPI:
  2179.     FILL    STOP
  2180.     CHAR    TAB
  2181.  
  2182.     GETWORD
  2183.     CHAR    "#"
  2184.     bsr.w    WORD2TEXT
  2185.     
  2186.     CHAR    LF
  2187.     rts    
  2188.  
  2189. ;-------------------------------------------------------------------------
  2190.  
  2191. TRAPVI:
  2192.     FILL    TRAPV
  2193.     CHAR    LF
  2194.     rts
  2195.     
  2196. ;-------------------------------------------------------------------------
  2197.  
  2198. RTSI:
  2199.     FILL    RTS
  2200.     CHAR    LF
  2201.     rts
  2202.  
  2203. ;-------------------------------------------------------------------------
  2204.  
  2205. RTDI:
  2206.     FILL    RTD
  2207.     CHAR    TAB
  2208.  
  2209.     GETWORD
  2210.     CHAR    "#"
  2211.     bsr.w    WORD2TEXT
  2212.     
  2213.     CHAR    LF
  2214.     rts
  2215.  
  2216. ;-------------------------------------------------------------------------
  2217.  
  2218. ILLEGALI:
  2219.     FILL    ILLEGAL
  2220.     CHAR    LF
  2221.     rts
  2222.  
  2223. ;-------------------------------------------------------------------------
  2224.  
  2225. RTRI:
  2226.     FILL    RTR
  2227.     CHAR    LF
  2228.     rts
  2229.  
  2230. ;-------------------------------------------------------------------------
  2231.  
  2232. RTEI:
  2233.     FILL    RTE
  2234.     CHAR    LF
  2235.     rts
  2236.  
  2237. ;-------------------------------------------------------------------------
  2238.  
  2239. NOPI:
  2240.     FILL    NOP
  2241.     CHAR    LF
  2242.     rts
  2243.  
  2244. ;-------------------------------------------------------------------------
  2245.  
  2246. RESETI:
  2247.     FILL    RESET
  2248.     CHAR    LF
  2249.     rts
  2250.  
  2251. ;=========================================================================
  2252.  
  2253. GETSIZE:
  2254.     move.w    d0,d1
  2255.     and.w    #%0000000011000000,d1
  2256.     lsr.w    #5,d1
  2257.  
  2258.     clr.w    SIZE
  2259.  
  2260.     cmp.w    #4,d1
  2261.     blt.s    OKSIZE
  2262.  
  2263.     move.w    #1,SIZE
  2264. OKSIZE:
  2265.     lea    SIZES,a1
  2266.     lea    (a1,d1.w),a1
  2267.  
  2268.     move.b    (a1)+,(a5)+
  2269.     move.b    (a1),(a5)+
  2270.  
  2271.     rts        
  2272.  
  2273. ;=========================================================================
  2274.  
  2275. MODEREGISTER:            ; Mode (d0) ... Register (d1)
  2276.     lsl.w    #2,d0
  2277.     lea    MODES,a0
  2278.     lea    (a0,d0.w),a0
  2279.     move.l    (a0),a0
  2280.     jmp    (a0)        
  2281.  
  2282. ;-------------------------------------------------------------------------
  2283.  
  2284. DATADIRECT:
  2285.     DATAREG
  2286.     rts
  2287.  
  2288. ;-------------------------------------------------------------------------
  2289.  
  2290. ADDRESSDIRECT:
  2291.     ADDRESSREG
  2292.     rts
  2293.  
  2294. ;-------------------------------------------------------------------------
  2295.  
  2296. ADDRESSINDIRECT:
  2297.     CHAR    "("
  2298.     ADDRESSREG
  2299.     CHAR    ")"
  2300.     rts
  2301.  
  2302. ;-------------------------------------------------------------------------
  2303.  
  2304. ADDRESSINPOST:
  2305.     CHAR    "("
  2306.     ADDRESSREG
  2307.     CHAR    ")"
  2308.     CHAR    "+"    
  2309.     rts
  2310.  
  2311. ;-------------------------------------------------------------------------
  2312.  
  2313. ADDRESSINPRE:
  2314.     CHAR    "-"    
  2315.     CHAR    "("
  2316.     ADDRESSREG
  2317.     CHAR    ")"
  2318.     rts
  2319.  
  2320. ;-------------------------------------------------------------------------
  2321.  
  2322. ADDRESSINDIS:
  2323.     GETWORD
  2324.  
  2325.     tst.w    d0
  2326.     bge.s    USEHEX
  2327.  
  2328.     move.l    d1,-(a7)    
  2329.  
  2330.     CHAR    "-"
  2331.  
  2332.     neg.w    d0    
  2333.     bsr.s    HEX2DEC
  2334.  
  2335.     move.l    (a7)+,d1
  2336.     bra.s    COMPAI
  2337.  
  2338. USEHEX:
  2339.     move.l    d1,-(a7)
  2340.     bsr.w    WORD2TEXT
  2341.     move.l    (a7)+,d1
  2342.  
  2343. COMPAI:
  2344.     bsr.s    ADDRESSINDIRECT
  2345.     rts
  2346.  
  2347. HEX2DEC:
  2348.     move.l    a5,a4
  2349.     lea    5(a4),a4
  2350.  
  2351.     moveq    #4,d7
  2352. FIRSTNUM:
  2353.     divu    #10,d0
  2354.     swap    d0
  2355.     add.b    #'0',d0
  2356.     move.b    d0,-(a4)
  2357.     clr.w    d0
  2358.     swap    d0
  2359.     dbf    d7,FIRSTNUM
  2360.  
  2361.     move.w    #3,d6
  2362. LZERO:
  2363.     cmp.b    #'0',(a5)
  2364.     bne.s    DONEH2D
  2365.  
  2366.     move.l    a5,a3
  2367.     lea    1(a3),a4
  2368.  
  2369.     move.w    d6,d7    
  2370. COPYNUM:
  2371.     move.b    (a4)+,(a3)+
  2372.     dbf    d7,COPYNUM
  2373.     dbf    d6,LZERO
  2374.  
  2375. DONEH2D:
  2376.     addq.w    #2,d6
  2377.     lea    (a5,d6.w),a5
  2378.  
  2379.     rts
  2380.  
  2381. ;-------------------------------------------------------------------------
  2382.  
  2383. ADDRESSINIDX:
  2384.     GETWORD
  2385.     movem.l    d0/d1,-(a7)
  2386.     bsr.w    BYTE2TEXT
  2387.     movem.l    (a7)+,d0/d1
  2388.  
  2389.     CHAR    "("
  2390.  
  2391.     ADDRESSREG    
  2392.     
  2393.     CHAR    ","
  2394.  
  2395.     move.w    d0,d1
  2396.     and.w    #$f000,d1
  2397.     and.w    #$0f00,d0
  2398.  
  2399.     rol.w    #4,d1
  2400.     lsr.w    #8,d0
  2401.     
  2402.     btst    #3,d1
  2403.     beq.s    IDXDATA
  2404.  
  2405.     bclr    #3,d1
  2406.     ADDRESSREG
  2407.     bra.s    SIZEIDX    
  2408.  
  2409. IDXDATA:
  2410.     DATAREG
  2411.  
  2412. SIZEIDX:
  2413.     CHAR    "."
  2414.  
  2415.     CHAR    "w"
  2416.  
  2417.     btst    #3,d0
  2418.     beq.s    DOIDX
  2419.  
  2420.     lea    -1(a5),a5
  2421.     CHAR    "l"
  2422.  
  2423. DOIDX:
  2424.     CHAR    ")"
  2425.     rts
  2426.  
  2427. ;-------------------------------------------------------------------------
  2428.  
  2429. OTHERMODES:
  2430.     lsl.w    #2,d1
  2431.     lea    SUBMODES,a0
  2432.     lea    (a0,d1.w),a0
  2433.     move.l    (a0),a0
  2434.     jmp    (a0)        
  2435.  
  2436. ;-------------------------------------------------------------------------
  2437.  
  2438. ABSSHORT:
  2439.     GETWORD
  2440.     bsr.w    WORD2TEXT
  2441.     CHAR    "."
  2442.     CHAR    "w"
  2443.     rts
  2444.  
  2445. ;-------------------------------------------------------------------------
  2446.  
  2447. ABSLONG:
  2448.     GETLONG
  2449.     bsr.w    LONG2TEXT
  2450.     rts
  2451.  
  2452. ;-------------------------------------------------------------------------
  2453.  
  2454. PCDIS:
  2455.     GETWORD
  2456.     ext.l    d0
  2457.     add.l    a6,d0
  2458.     subq.l    #$2,d0
  2459.     bsr.l    LONG2TEXT
  2460.  
  2461.     CHAR    "("
  2462.     FILL    PCT
  2463.     CHAR    ")"
  2464.     rts
  2465.  
  2466. ;-------------------------------------------------------------------------
  2467.  
  2468. PCIDX:
  2469.     GETWORD
  2470.     move.w    d0,d1
  2471.  
  2472.     and.w    #$00ff,d0
  2473.     ext.w    d0
  2474.     ext.l    d0
  2475.     add.l    a6,d0
  2476.     subq.l    #$2,d0
  2477.  
  2478.     move.l    d1,-(a7)
  2479.     bsr.l    LONG2TEXT
  2480.     move.l    (a7)+,d1
  2481.  
  2482.     CHAR    "("
  2483.     FILL    PCT
  2484.     CHAR    ","
  2485.  
  2486.     moveq    #0,d0
  2487.     move.w    d1,d0
  2488.     
  2489.     and.w    #$f000,d1
  2490.     and.w    #$0f00,d0
  2491.  
  2492.     rol.w    #4,d1
  2493.     lsr.w    #8,d0
  2494.     
  2495.     btst    #3,d1
  2496.     beq.s    PCDATA
  2497.  
  2498.     bclr    #3,d1
  2499.     ADDRESSREG
  2500.     bra.s    SIZEPC
  2501.  
  2502. PCDATA:
  2503.     DATAREG
  2504.  
  2505. SIZEPC:
  2506.     CHAR    "."
  2507.  
  2508.     CHAR    "w"
  2509.  
  2510.     btst    #3,d0
  2511.     beq.s    DOPC
  2512.  
  2513.     lea    -1(a5),a5
  2514.     CHAR    "l"
  2515.  
  2516. DOPC:
  2517.     CHAR    ")"
  2518.     rts
  2519.  
  2520. ;-------------------------------------------------------------------------
  2521.  
  2522. IMM_SR_CCR:
  2523.     tst.w    ISC
  2524.     beq.s    IMMIDIATE
  2525.  
  2526.     cmp.w    #1,ISC
  2527.     beq.s    SMSR
  2528.  
  2529. SMCCR:
  2530.     FILL    CCRT
  2531.     rts
  2532.  
  2533. SMSR:
  2534.     FILL    SRT
  2535.     rts
  2536.  
  2537. ;-------------------------------------------------------------------------
  2538.  
  2539. IMMIDIATE:
  2540.     CHAR    "#"
  2541.  
  2542.     tst.w    SIZE
  2543.     bne.s    IMMLONG
  2544.  
  2545. IMMWORD:
  2546.     GETWORD
  2547.     bsr.l    WORD2TEXT
  2548.     rts
  2549.  
  2550. IMMLONG:
  2551.     GETLONG
  2552.     bsr.l    LONG2TEXT
  2553.     rts
  2554.  
  2555. ;-------------------------------------------------------------------------
  2556.  
  2557. BYTE2TEXT:
  2558.     btst    #7,d0
  2559.     beq.s    PLUSSB
  2560.  
  2561.     CHAR    "-"
  2562.  
  2563.     neg.w    d0
  2564.     and.w    #$00ff,d0
  2565.  
  2566. PLUSSB:
  2567.     CHAR    "$"
  2568.  
  2569.     moveq    #1,d4
  2570.     move.w    #$00f0,d6
  2571.  
  2572.     move.w    #1,d7
  2573. B2LOOP:
  2574.     move.w    d0,d1
  2575.     and.w    d6,d1
  2576.             
  2577.     moveq    #0,d5
  2578. B2SHIFT:
  2579.     cmp.w    d5,d7
  2580.     beq.s    B2DONE
  2581.  
  2582.     lsr.w    #4,d1
  2583.     addq.w    #1,d5
  2584.     bra.s    B2SHIFT
  2585.  
  2586. B2DONE:
  2587.     tst.w    d4
  2588.     beq.s    B2IGNORE
  2589.  
  2590.     tst.b    d1
  2591.     beq.s    B2CONT
  2592.  
  2593.     moveq    #0,d4    
  2594.  
  2595. B2IGNORE:
  2596.     bsr.w    INSTEXT
  2597.  
  2598. B2CONT:
  2599.     lsr.w    #4,d6
  2600.     dbf    d7,B2LOOP
  2601.  
  2602.     cmp.b    #'$',-1(a5)
  2603.     bne.s    OKBT
  2604.  
  2605.     move.b    #'0',(a5)+
  2606.  
  2607. OKBT:
  2608.     rts
  2609.  
  2610. ;-------------------------------------------------------------------------
  2611.  
  2612. WORD2TEXT:
  2613.     CHAR    "$"
  2614.  
  2615.     moveq    #1,d4
  2616.     move.w    #$f000,d6
  2617.  
  2618.     move.w    #3,d7
  2619. W2LOOP:
  2620.     move.w    d0,d1
  2621.     and.w    d6,d1
  2622.             
  2623.     moveq    #0,d5
  2624. W2SHIFT:
  2625.     cmp.w    d5,d7
  2626.     beq.s    W2DONE
  2627.  
  2628.     lsr.w    #4,d1
  2629.     addq.w    #1,d5
  2630.     bra.s    W2SHIFT
  2631.  
  2632. W2DONE:
  2633.     tst.w    d4
  2634.     beq.s    W2IGNORE
  2635.  
  2636.     tst.b    d1
  2637.     beq.s    W2CONT
  2638.  
  2639.     moveq    #0,d4    
  2640.  
  2641. W2IGNORE:
  2642.     bsr.s    INSTEXT
  2643.  
  2644. W2CONT:
  2645.     lsr.w    #4,d6
  2646.     dbf    d7,W2LOOP
  2647.  
  2648.     cmp.b    #'$',-1(a5)
  2649.     bne.s    OKWT
  2650.  
  2651.     move.b    #'0',(a5)+
  2652.     
  2653. OKWT:
  2654.     rts
  2655.  
  2656. ;-------------------------------------------------------------------------
  2657.  
  2658. LONG2TEXT:
  2659.     CHAR    "$"
  2660.  
  2661.     moveq    #1,d4
  2662.     move.l    #$f0000000,d6
  2663.  
  2664.     move.w    #7,d7
  2665. L2LOOP:
  2666.     move.l    d0,d1
  2667.     and.l    d6,d1
  2668.             
  2669.     moveq    #0,d5
  2670. L2SHIFT:
  2671.     cmp.w    d5,d7
  2672.     beq.s    L2DONE
  2673.  
  2674.     lsr.l    #4,d1
  2675.     addq.w    #1,d5
  2676.     bra.s    L2SHIFT
  2677.  
  2678. L2DONE:
  2679.     tst.w    d4
  2680.     beq.s    L2IGNORE
  2681.  
  2682.     tst.b    d1
  2683.     beq.s    L2CONT
  2684.  
  2685.     moveq    #0,d4    
  2686.  
  2687. L2IGNORE:
  2688.     bsr.s    INSTEXT
  2689.  
  2690. L2CONT:
  2691.     lsr.l    #4,d6
  2692.     dbf    d7,L2LOOP
  2693.  
  2694.     cmp.b    #'$',-1(a5)
  2695.     bne.s    OKLT
  2696.  
  2697.     move.b    #'0',(a5)+
  2698.  
  2699. OKLT:
  2700.     rts
  2701.  
  2702. ;-------------------------------------------------------------------------
  2703.  
  2704. INSTEXT:
  2705.     cmp.b    #$9,d1
  2706.     bgt.s    HEX
  2707.  
  2708.     add.b    #'0',d1
  2709.     move.b    d1,(a5)+
  2710.     rts
  2711.  
  2712. HEX:
  2713.     add.b    #87,d1
  2714.     move.b    d1,(a5)+
  2715.     rts    
  2716.  
  2717. ;-------------------------------------------------------------------------
  2718.  
  2719.     section    Datafield,data
  2720.  
  2721. POINTER:    dc.l    $40000
  2722. LINE:        blk.b    80,0
  2723.  
  2724. ;--
  2725.  
  2726. SET:        dc.w    0
  2727. CODE:        dc.w    0
  2728.  
  2729. GROUPS:
  2730.         dc.l    BMMI    ; 0     Bit Manip./MOVEP/Immidiate
  2731.         dc.l    MOVEI    ; 1     Move Byte
  2732.         dc.l    MOVEI    ; 2     Move Long
  2733.         dc.l    MOVEI    ; 3     Move Word
  2734.         dc.l    MISC    ; 4     Miscellanious
  2735.         dc.l    ASSDB    ; 5     ADDQ/SUBQ/Scc/DBcc
  2736.         dc.l    BCCI    ; 6     Branching (Bcc)
  2737.         dc.l    MOVEQI    ; 7     MoveQ
  2738.         dc.l    ORDIS    ; 8     OR/DIV/SBCD
  2739.         dc.l    SUBINS    ; 9     SUB/SUBX
  2740.         dc.l    LINEAI    ; a     LINE_A
  2741.         dc.l    CMPEOR    ; b     CMP/EOR
  2742.         dc.l    AMAE    ; c     AND/MULU/MULS/ABCD/EXG
  2743.         dc.l    ADDINS    ; d     ADD/ADDX
  2744.         dc.l    SHIFTI    ; e     Shifting
  2745.         dc.l    LINEFI    ; f     LINE_F
  2746.  
  2747. ;------------------------------------------------------------------------
  2748.  
  2749. MODES:
  2750.         dc.l    DATADIRECT
  2751.         dc.l    ADDRESSDIRECT
  2752.         dc.l    ADDRESSINDIRECT
  2753.         dc.l    ADDRESSINPOST
  2754.         dc.l    ADDRESSINPRE
  2755.         dc.l    ADDRESSINDIS
  2756.         dc.l    ADDRESSINIDX
  2757.         dc.l    OTHERMODES
  2758.  
  2759. SUBMODES:
  2760.         dc.l    ABSSHORT
  2761.         dc.l    ABSLONG
  2762.         dc.l    PCDIS
  2763.         dc.l    PCIDX
  2764.         dc.l    IMM_SR_CCR
  2765.  
  2766. ISC:        dc.w    0            ; 0 = Immidiate
  2767.                         ; 1 = SR
  2768.                         ; 2 = CCR
  2769.  
  2770. SIZE:        dc.w    0            ; 0 = Word
  2771.                         ; 1 = Longword
  2772.  
  2773. ;------------------------------------------------------------------------
  2774.  
  2775. PCT:        dc.b    "pc",0
  2776. SRT:        dc.b    "sr",0
  2777. CCRT:        dc.b    "ccr",0
  2778.  
  2779. BYTE:        dc.b    ".b",0
  2780. WORD:        dc.b    ".w",0
  2781. LONG:        dc.b    ".l",0
  2782.  
  2783. SIZES:
  2784.         dc.b    ".b"
  2785.         dc.b    ".w"
  2786.         dc.b    ".l"
  2787.         dc.b    ".w"
  2788.         
  2789. DATAS:
  2790.         dc.b    "d0"
  2791.         dc.b    "d1"
  2792.         dc.b    "d2"
  2793.         dc.b    "d3"
  2794.         dc.b    "d4"
  2795.         dc.b    "d5"
  2796.         dc.b    "d6"
  2797.         dc.b    "d7"
  2798. ADDS:
  2799.         dc.b    "a0"
  2800.         dc.b    "a1"
  2801.         dc.b    "a2"
  2802.         dc.b    "a3"
  2803.         dc.b    "a4"
  2804.         dc.b    "a5"
  2805.         dc.b    "a6"
  2806.         dc.b    "a7"
  2807.  
  2808. ;--
  2809.  
  2810. BRANCHES:
  2811.     dc.b    "ra"
  2812.     dc.b    "sr"
  2813.     dc.b    "hi"
  2814.     dc.b    "ls"
  2815.     dc.b    "cc"
  2816.     dc.b    "cs"
  2817.     dc.b    "ne"
  2818.     dc.b    "eq"
  2819.     dc.b    "vc"
  2820.     dc.b    "vs"
  2821.     dc.b    "pl"
  2822.     dc.b    "mi"
  2823.     dc.b    "ge"
  2824.     dc.b    "lt"
  2825.     dc.b    "gt"
  2826.     dc.b    "le"
  2827.     even
  2828.         
  2829. SHIFTS:
  2830.     dc.l    ASR
  2831.     dc.l    ASL
  2832.     dc.l    LSR
  2833.     dc.l    LSL
  2834.     dc.l    ROXR
  2835.     dc.l    ROXL
  2836.     dc.l    ROR
  2837.     dc.l    ROL
  2838.  
  2839. DECLARE:    dc.b    "dc.w",0
  2840.     
  2841. ASR:        dc.b    "asr",0
  2842. ASL:        dc.b    "asl",0
  2843. LSR:        dc.b    "lsr",0
  2844. LSL:        dc.b    "lsl",0
  2845. ROXR:        dc.b    "roxr",0
  2846. ROXL:        dc.b    "roxl",0
  2847. ROR:        dc.b    "ror",0
  2848. ROL:        dc.b    "rol",0
  2849.  
  2850. BTST:        dc.b    "btst"
  2851. BCHG:        dc.b    "bchg"
  2852. BCLR:        dc.b    "bclr"
  2853. BSET:        dc.b    "bset"
  2854.  
  2855. LINEA:        dc.b    "line_a",0
  2856. LINEF:        dc.b    "line_f",0
  2857.  
  2858. ABCD:        dc.b    "abcd",0
  2859. ADD:        dc.b    "add",0
  2860. ADDQ:        dc.b    "addq",0
  2861. ADDX:        dc.b    "addx",0
  2862. AND:        dc.b    "and",0
  2863. CLR:        dc.b    "clr",0
  2864. CMP:        dc.b    "cmp",0
  2865. CMPM:        dc.b    "cmpm",0
  2866. DIV:        dc.b    "div",0
  2867. EOR:        dc.b    "eor",0
  2868. EXG:        dc.b    "exg",0
  2869. ILLEGAL:    dc.b    "illegal",0
  2870. MOVE:        dc.b    "move",0
  2871. MOVEC:        dc.b    "movec",0
  2872. MOVEQ:        dc.b    "moveq",0
  2873. MOVES:        dc.b    "moves",0
  2874. MUL:        dc.b    "mul",0
  2875. NEG:        dc.b    "neg",0
  2876. NEGX:        dc.b    "negx",0
  2877. NOP:        dc.b    "nop",0
  2878. NOT:        dc.b    "not",0
  2879. OR:        dc.b    "or",0
  2880. RESET:        dc.b    "reset",0
  2881. RTD:        dc.b    "rtd",0
  2882. RTE:        dc.b    "rte",0
  2883. RTR:        dc.b    "rtr",0
  2884. RTS:        dc.b    "rts",0
  2885. SBCD:        dc.b    "sbcd",0
  2886. SUB:        dc.b    "sub",0
  2887. SUBX:        dc.b    "subx",0
  2888. SUBQ:        dc.b    "subq",0
  2889. TRAP:        dc.b    "trap",0
  2890. TRAPV:        dc.b    "trapv",0
  2891. JSR:        dc.b    "jsr",0
  2892. JMP:        dc.b    "jmp",0
  2893. CHK:        dc.b    "chk.w",0
  2894. LEA:        dc.b    "lea",0
  2895. PEA:        dc.b    "pea",0
  2896. STOP:        dc.b    "stop",0
  2897. LINK:        dc.b    "link",0
  2898. UNLK:        dc.b    "unlk",0
  2899. EXTW:        dc.b    "ext.w",0
  2900. EXTL:        dc.b    "ext.l",0
  2901. SWAP:        dc.b    "swap",0
  2902. TAS:        dc.b    "tas",0
  2903. TST:        dc.b    "tst",0
  2904. NBCD:        dc.b    "nbcd",0
  2905. MOVEM:        dc.b    "movem",0
  2906. MOVEP:        dc.b    "movep",0
  2907.         even
  2908.         
  2909. BUFPTR:        dc.l    BUFFER
  2910. BUFFER:        blk.b    [80*256],0
  2911. E:
  2912. ;-----------------------------------------------------------------------
  2913.  
  2914. -- 
  2915. Morten Amundsen  |  mortena@ifi.uio.no  |  "Ja til EF"
  2916. University Of Oslo, Institute Of Informatics
  2917. "It's Not What You Got That Counts, But Where You Stick It."
  2918.  
  2919.